﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AntikCompta.Data;

namespace AntikCompta
{
    public partial class NewAchatWnd : Form
    {
        private Produit mProd;
        private Exercice mExercice;
        public NewAchatWnd(ref Exercice aExercice)
        {
            mExercice = aExercice;
            Init();
        }

        public NewAchatWnd(ref Exercice aExercice, ref Produit aProduit)
        {
            mProd = aProduit;
            mExercice = aExercice;

            Init();

            SAI_Ref.Text = mProd.Reference;

            SAI_Nom.Text = mProd.Nom;
            SAI_Prix.Text = mProd.PrixAchat+"";
            SAI_Date.Value = mProd.DateAchat;
            SAI_InfosVendeur.Text = mProd.InfosVendeur;

            CB_Vendeur.SelectedIndex = CB_Vendeur.FindString(mProd.Vendeur.Nom);
            CB_Payement.SelectedIndex = CB_Payement.FindString(mProd.ModePayementAchat.Nom);
        }

        private void Init()
        {
            InitializeComponent();

            SAI_Date.Value = SAI_Date.MinDate;

            CB_Vendeur.Items.Add("Aucun");
            CB_Vendeur.Items.Add(new VendeurParticulier());
            CB_Vendeur.Items.Add(new VendeurMarchandHt());
            CB_Vendeur.SelectedIndex = 0;

            CB_Payement.Items.Add("Aucun");
            CB_Payement.Items.Add(new Especes());
            CB_Payement.Items.Add(new Cheque());
            CB_Payement.SelectedIndex = 0;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            String value = SAI_Ref.Text;
            if (ValiderAchat(value))
            {
                if( mProd == null )
                    mProd = new Produit(value);

                mProd.Nom = SAI_Nom.Text;
                mProd.PrixAchat = SAI_Prix.FloatValue;
                mProd.DateAchat = SAI_Date.Value;
                mProd.InfosVendeur = SAI_InfosVendeur.Text;

                mProd.Vendeur = (Vendeur)CB_Vendeur.SelectedItem;
                mProd.ModePayementAchat = (ModePayement)CB_Payement.SelectedItem;

                DialogResult = DialogResult.OK;
                Close();
            }
        }

        private bool ValiderAchat(String aValue)
        {
            String value = SAI_Ref.Text;
            if ((mProd == null) && (mExercice.Exists(aValue) == true))
            {
                MessageBox.Show("La référence " + value + " existe déjà");
                return false;
            }
            else if (SAI_Date.Value == SAI_Date.MinDate)
            {
                MessageBox.Show("Tu n'as pas indiqué de date");
                return false;
            }
            else if (SAI_Date.Value.Year != mExercice.Annee)
            {
                MessageBox.Show("L'année de l'achat ne correspond pas à celle de l'exercice courant");
                return false;
            }
            else if (CB_Vendeur.SelectedIndex == 0)
            {
                MessageBox.Show("Tu n'a pas sélectionné de vendeur");
                return false;
            }
            else if (CB_Payement.SelectedIndex == 0)
            {
                MessageBox.Show("Tu n'a pas sélectionné le mode de payment");
                return false;
            }
            else if ((cb_facture.Checked) && (SAI_InfosVendeur.Text.Length <= 0))
            {
                MessageBox.Show("Tu n'a pas donné les informations du vendeur");
                return false;
            }

            return true;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.Cancel;
        }

        public Produit Produit
        {
            get { return mProd; }
        }
    }
}
